Перейти к основному содержимому

16.2 Настройка ECN

16.2.1 Обзор

Dведение

ECN (Explicit Congestion Notification) — явное уведомление о перегрузке

Перегрузка возникает, когда пропускной способности нисходящего канала коммутатора недостаточно для обработки трафика с восходящего канала. При продолжении перегрузки очередь буфера постепенно сжимается до тех пор, пока не будет исчерпана. В этом случае происходит потеря пакетов. Для решения этой проблемы в RFC3168 определён механизм ECN, который позволяет уведомлять отправителей трафика о необходимости замедлить скорость отправки, чтобы взять ситуацию под контроль до потери пакетов.

Рисунок 16-1: Поле ToS

Рисунок 16-1: Поле ToS

В поле ToS заголовка IP-пакета зарезервированы восемь бит.

  • Биты 0–2 представляют восемь приоритетов IP-пакетов. Приоритеты 7 и 6 обычно используются для передачи протокольных пакетов.
  • Биты 0–5 — это DSCP IP-пакета, определяющие различные типы сервисов.
  • Биты 6–7 — это поля ECN. Значения и значения ECN:
- Если поле ECN = 00, то пакет не поддерживает ECN.
- Если поле ECN = 01 или 10, то пакет поддерживает ECN.
- Если поле ECN = 11, это означает наличие перегрузки на пути.

Таким образом, механизм ECN работает следующим образом: при перегрузке на промежуточном коммутаторе устанавливается флаг ECN = 11, и пакеты продолжают передаваться вниз по потоку. Когда пакет достигает получателя, тот обнаруживает, что поле ECN равно 11, и делает вывод о наличии перегрузки. В ответ получатель отправляет CNP (Congestion Notification Packet — уведомление о перегрузке) отправителю, чтобы тот уменьшил скорость отправки и предотвратил дальнейшую перегрузку.

Рисунок 16-2: Механизм ECN

Рисунок 16-2: Механизм ECN

16.2.2 Примеры настройки

Настройка ECN на приоритетных очередях

В следующем примере ECN настраивается на очередях 1, 4 и 6 коммутатора Switch1. Пороговое значение ECN для очереди 4 — 2100 и 5000. Для остальных очередей пороги остаются по умолчанию.

Шаг 1: Вход в режим настройки

Switch# configure terminal

Шаг 2: Настройка приоритетов

Switch(config)# class-map type qos pri-4
Switch(config-cmap-qos)# match dscp ef
Switch(config-cmap-qos)# exit

Switch(config)# class-map type qos pri-6
Switch(config-cmap-qos)# match dscp cs6
Switch(config-cmap-qos)# exit

Switch(config)# class-map type qos pri-1
Switch(config-cmap-qos)# match dscp cs1
Switch(config-cmap-qos)# exit

Switch(config)# policy-map type qos pri-pmap
Switch(config-pmap-qos)# class type qos pri-4
Switch(config-pmap-qos-c)# set traffic-class 4
Switch(config-pmap-qos-c)# exit

Switch(config-pmap-qos)# class type qos pri-6
Switch(config-pmap-qos-c)# set traffic-class 6
Switch(config-pmap-qos-c)# exit

Switch(config-pmap-qos)# class type qos pri-1
Switch(config-pmap-qos-c)# set traffic-class 1
Switch(config-pmap-qos-c)# interface eth-0-1
Switch(config-if)# service-policy type qos input pri-pmap
Switch(config-if)# end

Шаг 3: Настройка планировщика очередей и порогов ECN

Switch# configure terminal 

Switch(config)# class-map type traffic-class traffic-pri-4
Switch(config-cmap-tc)# match traffic-class 4

Switch(config-cmap-tc)# class-map type traffic-class traffic-pri-6
Switch(config-cmap-tc)# match traffic-class 6

Switch(config-cmap-tc)# class-map type traffic-class traffic-pri-1
Switch(config-cmap-tc)# match traffic-class 1
Switch(config-cmap-tc)# exit

Switch(config)# policy-map type traffic-class traffic-pmap
Switch(config-pmap-tc)# class type traffic-class traffic-pri-4
Switch(config-pmap-tc-c)# random-detect maximum-threshold 5000 minimum-threshold 2100 ecn

Switch(config-pmap-tc-c)# class type traffic-class traffic-pri-6
Switch(config-pmap-tc-c)# random-detect maximum-threshold 8192 minimum-threshold 64 ecn

Switch(config-pmap-tc-c)# class type traffic-class traffic-pri-1
Switch(config-pmap-tc-c)# random-detect maximum-threshold 8192 minimum-threshold 64 ecn

Switch(config-pmap-tc)# class type traffic-class class-default
Switch(config-pmap-tc-c)# queue-limit dynamic 5
Switch(config-pmap-tc-c)# exit
Switch(config-pmap-tc)# exit

Шаг 4: Применение политики ECN к интерфейсу

Switch(config)# interface eth-0-1 
Switch(config-if)# service-policy type traffic-class traffic-pmap
Switch(config-if)# exit

Шаг 5: Выход из режима настройки

Switch(config)# end